package com.lyf.scm.admin.domain.service;

import com.github.pagehelper.PageInfo;
import com.lyf.scm.admin.api.dto.*;
import com.lyf.scm.admin.domain.excel.dto.SalesWriteDTO;
import com.lyf.scm.common.model.ExcelExportDTO;
import com.lyf.scm.common.model.ExcelExportDataDTO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @Author: huangtao
 * @Description: 其他渠道计划Service
 * @Date: create in 2020/7/31
 */
public interface SalesPlanOtherService {
    /**
     * 按条件查询其他渠道计划(周)
     *
     * @param salesPlanOther
     * @return
     */
    PlanResponseDTO<SalesPlanOtherInfoDTO> listWeekBySelective(SalesPlanOtherDTO salesPlanOther);

    /**
     * 图表数据接口
     *
     * @param salesPlanOther
     * @return
     */
    PlanResponseDTO<SalesPlanOtherInfoDTO> eChartsData(SalesPlanOtherDTO salesPlanOther);

    /**
     * 导入计划类型
     * @param file
     * @param type
     * @return
     */
    Integer importPlanType(MultipartFile file, String type);

    /**
     * 获取其他渠道计划当前用户级别
     *
     * @return
     */
    Integer getOtherPlanLevel();

    /**
     * 更新确认量
     *
     * @param all
     * @return
     */
    Boolean confirm(List<SalesPlanOtherDTO> all,Long unitType);


    /**
     * 导出数据
     *
     * @param excelExportDTO
     * @param type
     * @return
     **/
    //ExcelExportDataDTO export(ExcelExportDTO excelExportDTO, Integer type);

    /**
     * 保存导出的日志，异步导出
     *
     * @param excelExportDTO
     * @param type
     * @return
     */
    OperationLogRecordDTO saveOperatorLog(ExcelExportDTO excelExportDTO, Integer type);

    void createExportFile(OperationLogRecordDTO operationDto, ExcelExportDTO excelExportDTO, Integer type, List<String> channelCodes, Integer level, Long userId);

    /**
     * 获取上周到后五周的计划数据
     *
     * @param currentTime
     * @return
     */
    List<SalesWriteDTO> getLastWeekByType();

    /**
     * 导出模板数据
     *
     * @param type
     * @param date
     * @return {@link feign.Response}
     **/
    feign.Response downLoadTemplate(String type, String date);
}
